package com.component.api.model.param;

import cn.hutool.core.clone.CloneSupport;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * 描述：
 * 提供给后端使用的参数
 * @author xianggj
 * @Date 2021/10/12 16:32
 **/
@Data
@NoArgsConstructor
public class ParamPair extends CloneSupport<ParamPair> implements Serializable {

    private static final long serialVersionUID = -1L;

    public ParamPair(String name, ParamType type, String value, Class<?> valueType) {
        this.name = name;
        this.type = type;
        this.value = value;
        this.valueType = valueType;
    }

    public ParamPair(String name, String value) {
        this.name = name;
        this.type = ParamType.STRING;
        this.value = value;
        this.valueType = String.class;
    }

    /**
     * 参数名称
     */
    private String name;
    /**
     * 参数类型
     */
    private ParamType type;

    /**
     * 参数值
     * <p>
     *     方便起见，使用字符串传递
     *     流式数据和文件流最好传递链接信息
     * </p>
     */
    private String value;

    /**
     * 值类型 只有类型为OBJECT 和ARRAY时必填
     */
    private Class<?> valueType;
}
